package Singleton.type5;

/**
 * @Description:    单例模式 ------ 懒汉式（线程安全，同步代码块）
 * @Author: 		ZhaoLiangLiang
 * @date 			2023/2/13 09:01
 **/

public class Singleton05 {
    public static void main(String[] args) {
        Singleton test = Singleton.getInstance();
        Singleton test2 = Singleton.getInstance();
        System.out.println(test.hashCode());
        System.out.println(test2.hashCode());
        System.out.println(test == test2);
    }
}
class Singleton {
    // 1、构造器私有化 防止外部new
    private Singleton(){}

    // 2、本类内部创建对象实例
    private static Singleton instance;

    // 3、提供一个静态的公有方法,加入同步代码块,解决线程安全问题
    public static Singleton getInstance(){
        if(instance == null){
            synchronized (Singleton.class){
                instance = new Singleton();
            }
        }
        return instance;
    }
}
